package controllers

import (
	"fmt"
	"net/http"

	"github.com/gin-gonic/gin"
)

type FileController struct {
}

// @Summary		上传文件
// @Description	上传文件
// @Tags			WebInfo
// @Accept			multipart/form-data
// @Produce		json
// @Param			file	formData	file	true	"请选择文件"
// @Success		200		{object}	string
// @Router			/file/UploadFile [post]
func (u FileController) UploadFile(c *gin.Context) {
	// 获取普通文本字段
	name := c.PostForm("name")
	// 获取文件
	file, err := c.FormFile("file")
	if err != nil {
		c.JSON(http.StatusOK, gin.H{"code": 1, "message": "获取数据失败"})
	} else {
		// 保存上传的文件
		c.SaveUploadedFile(file, "upload/"+file.Filename)
		c.JSON(http.StatusOK, gin.H{"code": 0, "message": "上传成功", "name": name})
	}
}

// @Summary		下载文件
// @Description	下载文件
// @Tags			WebInfo
// @Accept			json
// @Produce		json
// @Param			content	query		string	true	"文件名"
// @Success		200		{object}	string
// @Router			/file/DownloadFile [get]
func (u FileController) DownloadFile(c *gin.Context) {
	content := c.Query("content")

	content = "hello world, 我是一个文件，" + content

	c.Writer.WriteHeader(http.StatusOK)
	c.Header("Content-Disposition", "attachment; filename=hello.txt")
	c.Header("Content-Type", "application/text/plain")
	c.Header("Accept-Length", fmt.Sprintf("%d", len(content)))
	c.Writer.Write([]byte(content))
}
